package com.lin.utils;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lin.myenum.NumberType;
import com.lin.pojo.DFile;
import com.lin.pojo.DModule;
import com.lin.pojo.MDesignProcedure;
import com.lin.service.DFileService;
import com.lin.service.DModuleService;
import com.lin.service.MDesignProcedureService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;

@Service
public class CreateNumber {

    @Autowired  //档案设计表
            DFileService dFileService;

   @Autowired  //物料设计表
            DModuleService dModuleService;

    @Autowired
    MDesignProcedureService mDesignProcedureService;

    String starpid = "100";

    public String createNum(NumberType type) {

        switch (type) {
            case productId:
                // return getpid();
            case designId:
                return getdesignid();
            case moduleId:
                return getmoduleid();
        }
        return "";

    }

    //获取产品档案id
    public String getproductid(DFile dFile) {

        //获取最后的priduct_id
        QueryWrapper<DFile> queryWrapper = new QueryWrapper<DFile>();
        //查询 产品编号id  id列降序排  取第一个（最大编号）
        queryWrapper.select("PRODUCT_ID").orderByDesc("ID").last("limit 1");
        String oldpid = "100000000000000";
        DFile dFile1 = dFileService.getOne(queryWrapper);
        if (dFile1 != null) {
            oldpid = dFile1.getProductId();
        }

        String pid = "100" + dFile.getFirstKindId() + dFile.getSecondKindId() + dFile.getThirdKindId() +
                (StringUtils.leftPad(Integer.parseInt(oldpid.substring(9)) + 1 + "", 6, "0"));

        return pid;
    }

    //获取物料设计id
    public String getmoduleid() {

        //当前时间  yyyyMMdd
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String datestr = sdf.format(date);

        //物料表 查询
        QueryWrapper<DModule> queryWrapper = new QueryWrapper<DModule>();
        //id 降序排列 最大的id
        queryWrapper.select("DESIGN_ID").orderByDesc("ID").last("limit 1");
        String olddid = "";
        DModule dModule = dModuleService.getOne(queryWrapper);
        //数据库有数据吗？
        if (dModule != null) {
            olddid = dModule.getDesignId();  //有  获取最新的设计id
        } else {
            //没有  数据为空  新增id
            return  "200" + datestr + "0001"; //表数据为空 第一次生成物料设计id

        }
        //有数据
        if (olddid.contains(datestr)) {  //物料设计编号 包含当前年月日  累加编号

            return "200" + datestr +StringUtils.leftPad((Integer.parseInt(olddid.substring(11)) + 1) + "", 4, "0");

        } else {  //不包含当前年月日  今天年月日+0001开始
            return "200" + datestr + "0001"; //表数据为空 第一次生成物料设计id

        }

    }

    //获取工序设计id
    public String getdesignid() {

        //当前时间  yyyyMMdd
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String datestr = sdf.format(date);

        //工序表 查询
        QueryWrapper<MDesignProcedure> queryWrapper = new QueryWrapper<MDesignProcedure>();
        //id 降序排列 最大的id
        queryWrapper.select("DESIGN_ID").orderByDesc("ID").last("limit 1");
        String olddid = "";
        MDesignProcedure mDesignProcedure = mDesignProcedureService.getOne(queryWrapper);
        //数据库有数据吗？
        if (mDesignProcedure != null) {
            olddid = mDesignProcedure.getDesignId();  //有  获取最新的设计id
        } else {
            //没有  数据为空  新增id
            return  "201" + datestr + "0001"; //表数据为空 第一次生成物料设计id

        }
        //有数据
        if (olddid.contains(datestr)) {  //物料设计编号 包含当前年月日  累加编号

            return "201" + datestr +StringUtils.leftPad((Integer.parseInt(olddid.substring(11)) + 1) + "", 4, "0");

        } else {  //不包含当前年月日  今天年月日+0001开始
            return "201" + datestr + "0001"; //表数据为空 第一次生成物料设计id

        }

    }

}
